package ch09
{
	import flash.display.Sprite;
	import flash.events.Event;

	import utils.Ball;

	/**
	 * 影片与点的碰撞检测.
	 * 使用hitTestPoint
	 * @author sjp
	 *
	 */
	public class PointHitTest extends Sprite
	{
		private var ball:Ball;

		public function PointHitTest()
		{
			init();
		}

		private function init():void
		{
			ball=new Ball();
			addChild(ball);
			ball.x=stage.stageWidth / 2;
			ball.y=stage.stageHeight / 2;
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}

		private function onEnterFrame(event:Event):void
		{
			/**
			   hitTestPoint () 方法
			   public function hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean
			   计算显示对象，以确定它是否与 x 和 y 参数指定的点重叠或相交。
			   x 和 y 参数指定舞台的坐标空间中的点，而不是包含显示对象的显示对象容器中的点（除非显示对象容器是舞台）。

			   参数
			   x:Number — 要测试的此对象的 x 坐标。
			   y:Number — 要测试的此对象的 y 坐标。
			   shapeFlag:Boolean (default = false) — 是检查对象 (true) 的实际像素，还是检查边框 (false) 的实际像素。

			   返回
			   Boolean — 如果显示对象与指定的点重叠或相交，则为 true；否则为 false。
			 * */

			/**
			 * shapeFlag 是 hitTestPoint 方法的第三个参数是可选的。
			 * 其值是 Boolean 类型的，因此只有 true 和 false。将 shapeFlag 设置为 true 意味着碰撞检测时判断影片中可见的图形，而不是矩形边界。
			 * 注意，shapeFlag 只在能用在检测点与影片的碰撞中。如果是两个影片的碰撞就不能用这个参数了。
			 * */
			if (ball.hitTestPoint(mouseX, mouseY, true))
			{
				trace("hit");
			}
		}
	}
}